﻿using Microsoft.VisualBasic.FileIO;
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Common.Helpers
{
    public class CsvHelper
    {
        public static DataTable Parse(string filePath)
        {
            DataTable dataTable = new DataTable("csv");
            try
            {
                // 打开 CSV 文件并读取内容
                using (TextFieldParser parser = new TextFieldParser(filePath))
                {
                    // 指定 CSV 文件分隔符为逗号
                    parser.SetDelimiters(",");

                    // 是否读取第一行作为表头，默认为 True
                    bool isFirstLineAsHeader = true;

                    while (!parser.EndOfData)
                    {
                        // 从 CSV 文件中读取一行数据
                        string[] fields = parser.ReadFields();

                        // 第一行作为表头
                        if (isFirstLineAsHeader)
                        {
                            foreach (string field in fields)
                            {
                                dataTable.Columns.Add(field, typeof(string));
                            }
                            isFirstLineAsHeader = false;
                        }
                        else
                        {
                            // 将每行数据添加到 DataTable 中
                            DataRow dataRow = dataTable.NewRow();
                            for (int i = 0; i < fields.Length; i++)
                            {
                                dataRow[i] = fields[i];
                            }
                            dataTable.Rows.Add(dataRow);
                        }
                    }
                }
                return dataTable;

                // 输出 DataTable 的内容
                //foreach (DataRow row in dataTable.Rows)
                //{
                //    foreach (DataColumn col in dataTable.Columns)
                //    {
                //        Console.Write(row[col] + " ");
                //    }
                //    Console.WriteLine();
                //}
            }
            catch (Exception ex)
            {
                return null;
                //Console.WriteLine($"读取文件 {filePath} 时出错：{ex.Message}");
            }
        }

    }
}
